若 Python 是你打算學的第一個程式語言,可能不免會想:學 Python 是對的嗎?
個人認為,所學的第一個程式語言,與其說是在學語言本身,不如說是在學「學習寫程式」這件事情。當你學會如何學習寫程式之後,去學第二個或第三個程式語言都很容易觸類旁通。就算以後 Python 真的被淘汰了,已經具備學習能力的你,轉移到下個程式語言肯定也是駕輕就熟。
因此我會說,學 Python 不一定對,但「學」一定是對的。
相對於其他程式語言而言,Python 是個簡單易學卻又貨真價實的程式語言,而且也是個相當受歡迎的熱門程式語言,這意味著網路上的討論度很高,網路上的資源充足,遇到什麼問題去 Google 也比較容易找到解答。也因此,許多 AI 助手的訓練資料裡面包含了大量的 Python 程式碼,向 AI 請教 Python 的問題時也更容易得到正確的答案。
謹慎對待 AI 的回答,有時 AI 還是會給出似是而非的答案,不要全部信以為真。
可以參考這張路線圖:
這張圖看下來眼花撩亂,好像很多東西要學欸 😵💫 但是不用擔心,我學 Python 這麼多年了,上面這張圖的東西也不是每個我都懂。原則上越是前面的東西越是基礎重要,越是後面的東西越是深入難懂,但同時也是個人價值的決勝關鍵。
除了 Python 路線圖以外,該網站也有提供 AI Data 路線圖,但個人認為這份路線圖描述的相對籠統且學術,理解起來相對複雜難懂,可以先當參考就好。
因為 Python 簡單易用的關係,所以有許多熱門的 AI 應用都是基於 Python 打造的。像是機器學習經常要操作一些數學理論複雜的公式或模型,但是透過 scikit-learn 或 PyTorch 這些機器學習框架,複雜的數學理論都被封裝的很精簡。不需要學會太多艱澀難懂的程式語法,也能輕鬆且快速的操作這些複雜運算。
因此,從 Python 程式碼來觀摩機器學習的程式碼,可以更專注在瞭解理論核心的實現,減少許多支微末節的干擾。
除此之外,有許多工具都可以透過 Python 來操作,例如控制 Spotify 音樂播放、操作 Excel 表格編輯、收發 Line Bot 訊息等等。如果我們學會用 Python 開發一套 AI 系統的話,就可以很輕鬆的與這些工具做整合囉!像是叫 AI 推薦一些你喜歡的音樂、請 AI 幫你整理財務報表、讓 AI 幫你回覆客戶訊息等等。
因此從 Python 入門 AI 絕對不虧!
許多日常生活會遇到的小問題,例如修改檔案名稱、下載某網站的影片、幫圖片影片轉檔或者翻譯整份文件等等,很多人可能會選擇一些來路不明或者充斥大量廣告的第三方軟體來協助。有些時候只需要處理一兩個檔案,可能不成問題,但若是有數十個甚至數百個以上的檔案時,這些問題就很頭痛了!若是能學會 Python,這些事情都可以靠自己寫個幾行程式碼來解決喔!
Python 的缺點可謂罄竹難書,他的運作效率相對於 C 語言而言慢非常多,同樣的應用在運算資源與記憶體消耗上相較於其他語言也都大的多。在多執行緒應用上限制也很大,因此不少地方都很難透過平行處理來加快程式運作速度。面對移動裝置(例如:手機、平板)或是嵌入式裝置(例如:樹莓派、Arduino)等等,這種運算資源相對較少的硬體,Python 便顯得異常腫大難用。
筆者曾經在樹莓派上放一個語音辨識的模型,使用者念一段 1 秒左右的音檔,用 Python 做辨識大概要花 30 秒,但如果改用 C 來寫,只要花 3 秒就完成辨識了。雖然以業界標準來說,辨識 3 秒還是非常久,但相對於 Python 而言,速度完全不是同個層級。
聽起來 Python 缺點還不少欸,又胖又慢的,這還能用嗎?其實在關鍵操作的部份,套件開發者都會用 C 語言來加速運算,速度的犧牲在多數情況下都算是可接受的。
還有很重要的一點是可行性驗證,當我們需要去驗證某個想法是否正確,這時就希望可以快速做個實驗,那 Python 靈活開發的優點便顯現出來,使用 Python 寫個用完就丟的小程式相當簡單快速,對於研究人員而言相當方便。
剛剛提到的語音辨識模型,為了用 C 語言改寫,我花了將近一週才完成,但是 Python 版的程式碼謹花費一個下午而已,兩者的開發速度也是天差地遠,而且 C 語言的學習成本也是滿高的。
本章節簡單描述了 Python 的優缺點與必要性,Python 簡單易學,具有快速且靈活的開發模式,且在人工智慧領域受到廣泛的採用,絕對是個非常值得考慮的選擇。希望以上介紹能讓各位更有決心的學習 Python,也更有信心認定自己是走在對的道路上。